//根目录新建 script/openapi.js
import { generateService } from '@umijs/openapi'
// import { openApi } from './config.js'

export const openApi = [
    {
        requestLibPath: "import request from 'axios'", // 想怎么引入封装请求方法
        schemaPath: 'http://localhost:9999/v2/api-docs?group=webApi', // openAPI规范地址
        // projectName: 'api', // 生成到哪个目录内
        apiPrefix: '"/api"', // 需不需要增加前缀
        serversPath: './src', // 生成代码到哪个目录
    }
];

async function run() {
    for (let index = 0; index < openApi.length; index++) {
        await generateService(openApi[index])
    }
}

await run()


import fs from 'fs'
// const fs = require('fs');
import path from 'path'
// const path = require('path');

// 直接指定具体文件路径，可根据实际情况修改
const targetFile = './src/api/typings.d.ts'; 

// 要替换的原字符串和目标字符串
const oldStr = "declare namespace";
const newStr = "export declare namespace";

async function editTs(file) {
    // const stats = fs.statSync(file);
    if (file.endsWith('.ts')) {
        const content = fs.readFileSync(file, 'utf8');
        const modifiedContent = content.replace(oldStr, newStr);
        fs.writeFileSync(file, modifiedContent);
    }
}

editTs(targetFile);

// const fs = require('fs');
// const path = require('path');

// 目标目录，可根据实际情况修改
const targetDir = './src/api';

// 要排除修改的文件名（指定的那个文件），可根据实际情况修改
const excludedFileName = 'typings.d.ts';

// 要新增的一行数据内容
const newDataLine = `import type { API } from "./typings";`;

async function addLineToTs(dir) {
    fs.readdirSync(dir).forEach((file) => {
        const filePath = path.join(dir, file);
        const stats = fs.statSync(filePath);
        if (file.endsWith('.ts') && file!== excludedFileName) {
            // 读取文件内容并按行分割成数组
            const contentLines = fs.readFileSync(filePath, 'utf8').split('\n');
            // 在第四行插入新数据（索引为3，因为数组索引从0开始）
            contentLines.splice(3, 0, newDataLine);
            // 将修改后的数组重新拼接为字符串
            const modifiedContent = contentLines.join('\n');
            fs.writeFileSync(filePath, modifiedContent);
        }
        if (file == 'downloadFile.ts'){
            // 读取文件内容并按行分割成数组
            const contentLines = fs.readFileSync(filePath, 'utf8').split('\n');
            // 在第四行插入新数据（索引为3，因为数组索引从0开始）
            contentLines.splice(16, 0, '    responseType: "blob",');
            // 将修改后的数组重新拼接为字符串
            const modifiedContent = contentLines.join('\n');
            fs.writeFileSync(filePath, modifiedContent);
        }
    });
}

addLineToTs(targetDir);


